package com.wanjia.estate.pojo.bank;

import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Query {

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Header extends CommonHeader {
        public Header() {
            setBizMethod(BIZ_METHOD_BILL_QUERY);
        }
    }

    @Data
    public static class Request implements Serializable {
        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 仅支持数字和字母
         */
        private String orderId;
        /**
         * 商户发送交易时间，
         * 格式：  yyyyMMddHHmmss
         */
        private String txnTime;
        /**
         * Base64编码实体类
         *
         * @see BillDetailInfo
         */
        private String billDetailInfo;
        /**
         * 请求方保留域
         */
        private String reqReserved;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Response extends CommonResponse {
        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 仅支持数字和字母
         */
        private String orderId;
        /**
         * 商户发送交易时间，
         * 格式：  yyyyMMddHHmmss
         */
        private String txnTime;
        /**
         * 请求方保留域
         */
        private String reqReserved;
        /**
         * 欠费总金额，返回查询请求中所有账单的欠费总和
         * 仅支持数字。单位为币种对应的最小单位，参数值不能带小数
         */
        private String txnAmt;
        /**
         * Base64编码实体类
         *
         * @see BillDetailInfo
         */
        private String billDetailInfo;
    }
}